home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 030 / listuser.arc / LISTUSER.BAS (.txt) next >
Encoding:
GW-BASIC  |  1986-07-27  |  12.9 KB  |  344 lines

  1. 10     REM
  2. 20     REM ***** LISTUSER.BAS *****
  3. 30     REM
  4. 40     REM COPYRIGHT 1986, BETTER SYSTEMS DESIGN,
  5. 50     REM                 INDIAN HILLS COMMUNITY COLLEGE
  6. 60     REM                 ALL RIGHTS RESERVED
  7. 70     REM
  8. 80     REM THIS PROGRAM LISTS NOVELL USERS AND THERE IDENTIFICATION
  9. 100    REM
  10. 110    REM SET UP THE NETWARE CALLS
  11. 120    REM
  12. 130    GOSUB 10000
  13. 200    REM
  14. 210    REM SET THE CONSTANTS
  15. 220    REM
  16. 230    FIRSTTRY$ = CHR$(&HFF) + CHR$(&HFF) + CHR$(&HFF) + CHR$(&HFF)
  17. 240    EOP = 99
  18. 250    PAGE.NUMBER = 0
  19. 260    USER.NUMBER = 0
  20. 300    REM
  21. 310    REM CHOOSE WHETHER YOU WANT THE OUTPUT TO GO TO THE SCREEN OR PRINTER
  22. 320    REM
  23. 330    CLS
  24. 340    PRINT "DO YOU WANT YOUR REPORT TO GO TO THE"
  25. 341    PRINT
  26. 342    PRINT "    SCREEN  (S)"
  27. 344    PRINT "    PRINTER (P)"
  28. 347    PRINT "    QUIT    (Q)"
  29. 348    PRINT
  30. 349    PRINT "PLEASE ENTER YOUR CHOICE (S/P/Q) - "
  31. 350    LOCATE 7,36
  32. 360    X$ = INKEY$
  33. 370    PRINT X$
  34. 375    IF X$ = "Q" THEN CLS : SYSTEM
  35. 376    IF X$ = "q" THEN CLS : SYSTEM
  36. 380    IF X$ = "S" THEN 500
  37. 390    IF X$ = "s" THEN X$ = "S" : GOTO 500
  38. 400    IF X$ = "P" THEN 500
  39. 410    IF X$ = "p" THEN X$ = "P" : GOTO 500
  40. 415    GOTO 350
  41. 500    REM
  42. 510    REM START OF THE MAIN PROGRAM
  43. 520    REM
  44. 530    REM NOW SET UP AND START POLLING THE BINDERY FOR DATA
  45. 540    REM
  46. 550    REM USERS
  47. 560    LASTOBJECTID$ = FIRSTTRY$
  48. 570    RETURNCODE% = 0
  49. 580    PATTERNTYPEHI$ = CHR$(0)
  50. 590    PATTERNTYPELO$ = CHR$(1)
  51. 600    GOSUB 20000
  52. 9000   CLS
  53. 9999   SYSTEM
  54. 10000  REM
  55. 10010  REM ROUTINES FOR NETWORK USE
  56. 10020  REM
  57. 10030  REM THIS SECTION CONTAINS THE ROUTINE NAMES AND
  58. 10040  REM OFFSETS FOR THE BASNET LIBRARY
  59. 10050  REM THE RETURN IS AFTER EVERYTHING IS SET UP FOR NETWARE CALLS
  60. 10060  XTNDOPN  =   0   'xtndopn(Mode%, Filename$, Handle%, ErrCode%)
  61. 10070  SETATTR  =   3   'setattr(Func%, Filename$, Attribute%, ErrCode%)
  62. 10080  EOJSTAT  =   6   'eojstat(Flag%)
  63. 10090  PRLH.LOG =   9   'PRLH.Log(FileHandle%,HiByteOffset%,LoByteOffset%,HiLockLen%,LoLockLen%,Flags%,TimeOut%,ErrCode%)
  64. 10100  PRLH.REL =  12   'PRLH.Rel(FileHandle%,HiByteOffset%,LoByteOffset%,ErrCode%)
  65. 10110  PRLH.CLR =  15   'PRLH.Clr(FileHandle%,HiByteOffset%,LoByteOffset%,Errcode%)
  66. 10120  PRLF.LOG =  18   'PRLF.Log(fcb%,HiByteOffset%,LoByteOffset%,HiLockLen%,LoLockLen%,Flags%,TimeOut%,ErrCode%)
  67. 10130  PRLF.REL =  21   'PRLF.Rel(fcb%,HiByteOffset%,LoByteOffset%,ErrCode%)
  68. 10140  PRLF.CLR =  24   'PRLF.Clr(fcb%,HiByteOffset%,LoByteOffset%,ErrCode%)
  69. 10150  PRLS.LCK =  27   'PRLS.Lck(Flags%,TimeOut%,ErrCode%)
  70. 10160  PRLS.REL =  30   'PRLS.Rel(ErrCode%)
  71. 10170  PRLS.CLR =  33   'PRLS.Clr(ErrCode%)
  72. 10180  OPENSEM  =  36   'OpenSem(Sema4$,SemaValu%,HiHandle%,LoHandle%,OpenCnt%,RetCode%)
  73. 10190  EXAMSEM  =  39   'ExamSem(HiHandle%,LoHandle%,SemaValu%,OpenCnt%,RetCode%)
  74. 10200  WAITSEM  =  42   'WaitSem(HiHandle%,LoHandle%,TimeOut%,RetCode%)
  75. 10210  SIGSEM   =  45   'SigSem(HiHandle%,LoHandle%,RetCode%)
  76. 10220  CLOSSEM  =  48   'ClosSem(HiHandle%,LoHandle%,RetCode%)
  77. 10230  SETLCK   =  51   'setlck(Func%,Mode%)
  78. 10240  BAKOUTS  =  54   'Bakouts(Func%,RetCode%)
  79. 10250  BTRANS   =  57   'btran(ReturnCode%, Mode%)
  80. 10260  ETRANS   =  60   'etrans(ReturnCode%)
  81. 10270  EXCLOG   =  63   'exclog(ReturnCode%, FcbAddr)
  82. 10280  EXCLCKS  =  66   'exclcks(ReturnCode%, Mode%)
  83. 10290  EXCULKF  =  69   'exculkf(ReturnCode%, FcbAddr)
  84. 10300  EXCULKS  =  72   'exculks(ReturnCode%)
  85. 10310  EXCCLRF  =  75   'excclrf(ReturnCode%, FcbAddr)
  86. 10320  EXCCLRS  =  78   'excclrs(ReturnCode%)
  87. 10330  RECLOG   =  81   'reclog(ReturnCode%, String$)
  88. 10340  RECLCK   =  84   'reclck(ReturnCode%, Mode%)
  89. 10350  RECULK   =  87   'reculk(ReturnCode%, Semaphore$)
  90. 10360  RECULKS  =  90   'reculks(ReturnCode%)
  91. 10370  RECCLR   =  93   'recclr(ReturnCode%, Semaphore$)
  92. 10380  RECCLRS  =  96   'recclrs(ReturnCode%)
  93. 10390  EOJ      =  99   'eoj(ReturnCode%)
  94. 10400  SYSOUT   = 102   'sysout(ReturnCode%)
  95. 10410  ALLOCR   = 105   'allocr(ReturnCode%, Resource%)
  96. 10420  DALLOCR  = 108   'dallocr(ReturnCode%, Resource%)
  97. 10430  VOLSTAT  = 111   'volstat(volume%, reply$)
  98. 10440  LOCDRV   = 114   'locdrv(NumDisks%)
  99. 10450  WSID     = 117   'wsid(ThisStationNum%)
  100. 10460  ERRMODE  = 120   'errmode(mode%)
  101. 10470  BCSMODE  = 123   'bcsmode(mode%)
  102. 10480  CTLSPL   = 126   'ctlspl(mode%)
  103. 10490  SPLREQ   = 129   'splreq(ErrCode%, RequestBlock$, Reply$)
  104. 10500  PIPREQ   = 132   'pipreq(ErrCode%, RequestBlock$, Reply$)
  105. 10510  DPATH    = 135   'dpath(ReturnCode%, RequestBlock$, Reply$)
  106. 10520  SYSLOG   = 138   'syslog(ReturnCode%, RequestBlock$, Reply$)
  107. 10530  FATTR    = 141   'fattr(ReturnCode%, FcbAddr, Attribute%)
  108. 10540  UPDFCB   = 144   'updfcb(RetCode%,FcbAddr)
  109. 10550  CPYFILE  = 147   'cpyfile(ReturnCode%, FcbSource, FcbDest, CountLow, CountHigh)
  110. 10560  NETTOD   = 150   'nettod(time$)
  111. 10570  CLSMODE  = 153   'clsmode(mode%)
  112. 10580  DRVMAP   = 156   'drvmap(ReturnFlags%, drive%)
  113. 10590  RETSHL   = 159   'retshl(RetCode%, Mode%)
  114. 10600  ASCLOG   = 162   'asclog(RetCode%, Asciiz$)
  115. 10610  ASCULKF  = 165   'asculkf(RetCode%, Asciiz$)
  116. 10620  ASCCLRF  = 168   'ascclrf(RetCode%, Asciiz$)
  117. 10630  GETPSN   = 171   'Get_PSN(StationNo%)
  118. 10640  GETSTA   = 174   'Get_STA(Mode%,Segment%,Offset%)
  119. 10650  SETSERV  = 177   'SetServ(Mode%,NewServ%,CurrServ%)
  120. 10660  MODSERV  = 180   'ModServ(Mode%,NewServ%,RetCode%)
  121. 10670  REM
  122. 10680  REM ASSIGN THE SEGMENT ADDRESS FOR THE LIBRARY TO THE VARIABLE LIBSEG
  123. 10690  REM
  124. 10700  DEF SEG = 0
  125. 10710  SUBOFF = PEEK(&H4F0)+(256*PEEK(&H4F1))
  126. 10720  SUBSEG = PEEK(&H4F2)+(256*PEEK(&H4F3))
  127. 10730  LIBSEG = SUBSEG
  128. 10740  DEF SEG
  129. 10750  REM
  130. 10760  REM SET THE ERROR MODE SO ITS MORE INFORMATIVE
  131. 10770  REM
  132. 10780  DEF SEG = LIBSEG
  133. 10790  NEWMODE% = 1
  134. 10800  CALL ERRMODE(NEWMODE%)
  135. 10810  DEF SEG
  136. 10820  REM
  137. 10999  RETURN
  138. 12000  REM
  139. 12010  REM DETERMINE THE USERS ACCESS LEVEL
  140. 12020  REM
  141. 12030  REM ENTER WITH - LIBSEG
  142. 12040  REM USES (WITHOUT ALTERING) - LIBSEG
  143. 12050  REM CHANGES - REQPACLENHI$, REQPACLENLO$, FUNC$, RETURNCODE%, ACCESSREQ$,
  144. 12060  REM           ACCESSBYTE$, ACCESSREPLY$, RDRIGHTS$, WRTRIGHTS$
  145. 12070  REQPACLENLO$ = CHR$(1)
  146. 12080  REQPACLENHI$ = CHR$(0)
  147. 12090  FUNC$ = CHR$(70)
  148. 12100  ACCESSREQ$ = REQPACLENLO$ + REQPACLENHI$ + FUNC$
  149. 12110  ACCESSREPLY$ = CHR$(5)+CHR$(0)+STRING$(5,"x")
  150. 12120  RETURNCODE% = 0
  151. 12130  DEF SEG = LIBSEG
  152. 12140  CALL SYSLOG(RETURNCODE%,ACCESSREQ$,ACCESSREPLY$)
  153. 12150  DEF SEG
  154. 12160  IF RETURNCODE% <> 0 THEN PRINT "Request Error, Aborting": END
  155. 12170  ACCESSBYTE$ = MID$(ACCESSREPLY$,3,1)
  156. 12180  IF ACCESSBYTE$ = CHR$(0) THEN RDRIGHTS$ = "Free" : WRTRIGHTS$ = "Free"
  157. 12190  IF ACCESSBYTE$ = CHR$(1) THEN RDRIGHTS$ = "Logged" : WRTRIGHTS$ = "Free"
  158. 12200  IF ACCESSBYTE$ = CHR$(2) THEN RDRIGHTS$ = "Mine" : WRTRIGHTS$ = "Free"
  159. 12210  IF ACCESSBYTE$ = CHR$(3) THEN RDRIGHTS$ = "Supervisor" : WRTRIGHTS$ = "Free"
  160. 12220  IF ACCESSBYTE$ = CHR$(16) THEN RDRIGHTS$ = "Free" : WRTRIGHTS$ = "Logged"
  161. 12230  IF ACCESSBYTE$ = CHR$(17) THEN RDRIGHTS$ = "Logged" : WRTRIGHTS$ = "Logged"
  162. 12240  IF ACCESSBYTE$ = CHR$(18) THEN RDRIGHTS$ = "Mine" : WRTRIGHTS$ = "Logged"
  163. 12250  IF ACCESSBYTE$ = CHR$(19) THEN RDRIGHTS$ = "Supervisor" : WRTRIGHT$ = "Logged"
  164. 12260  IF ACCESSBYTE$ = CHR$(32) THEN RDRIGHTS$ = "Free" : WRTRIGHTS$ = "Mine"
  165. 12270  IF ACCESSBYTE$ = CHR$(33) THEN RDRIGHTS$ = "Logged" : WRTRIGHTS$ = "Mine"
  166. 12280  IF ACCESSBYTE$ = CHR$(34) THEN RDRIGHTS$ = "Mine" : WRTRIGHTS$ = "Mine"
  167. 12290  IF ACCESSBYTE$ = CHR$(35) THEN RDRIGHTS$ = "Supervisor" : WRTRIGHTS$ = "Mine"
  168. 12300  IF ACCESSBYTE$ = CHR$(48) THEN RDRIGHTS$ = "Free" : WRTRIGHTS$ = "Supervisor"
  169. 12310  IF ACCESSBYTE$ = CHR$(49) THEN RDRIGHTS$ = "Logged" : WRTRIGHTS$ = "Supervisor"
  170. 12320  IF ACCESSBYTE$ = CHR$(50) THEN RDRIGHTS$ = "Mine" : WRTRIGHTS$ = "Supervisor"
  171. 12330  IF ACCESSBYTE$ = CHR$(51) THEN RDRIGHTS$ = "Supervisor" : WRTRIGHTS$ = "Supervisor"
  172. 12999  RETURN
  173. 14000  REM
  174. 14010  REM SET UP THE REQUEST PACKET TO SCAN FOR OBJECTS OF THE CHOSEN TYPE
  175. 14020  REM
  176. 14030  REM WHEN CALLING THIS ROUTINE REMEMBER TO SET THE LASTOBJECTSEEN$
  177. 14040  REM (4 BYTES) TO -1 INITIALLY AND THEREAFTER EQUAL TO THE UNIQUEOBJECTID$
  178. 14050  REM
  179. 14060  REM ENTER WITH - PATTERNTYPEHI$, PATTERNTYPELO$, LASTOBJECTID$, LIBSEG
  180. 14070  REM USES (BUT DOES NOT ALTER) - PATTERNTYPEHI$, PATTERNTYPELO$, LASTOBJECTSEEN$, LIBSEG
  181. 14080  REM CHANGES - REQPACLENHI$, REQPACLENLO$, FUNC$, REPPACLENHI$, REPPACLO$,
  182. 14090  REM    OBJREPLY$, OBJREQUEST$, PATTERNLEN$, PATTERN$
  183. 14100  REQPACLENHI$ = CHR$(0)
  184. 14110  REQPACLENLO$ = CHR$(9)
  185. 14120  FUNC$ = CHR$(55) 'scan for objects subfunction
  186. 14130  PATTERNLEN$ = CHR$(1)
  187. 14140  PATTERN$ = "*"
  188. 14150  OBJREQ$ = REQPACLENLO$ + REQPACLENHI$ + FUNC$ + LASTOBJECTID$ + PATTERNTYPEHI$ + PATTERNTYPELO$ + PATTERNLEN$ + PATTERN$
  189. 14160  REM SET UP THE REPLY BUFFER
  190. 14170  REPPACLENHI$ = CHR$(0)
  191. 14180  REPPACLENLO$ = CHR$(57)
  192. 14190  OBJREPLY$ = REPPACLENLO$ + REPPACLENHI$ + STRING$((ASC(REPPACLENHI$)*256) + ASC(REPPACLENLO$),"x")
  193. 14200  REM
  194. 14210  REM MAKE THE BINDERY REQUEST
  195. 14220  REM
  196. 14230  DEF SEG = LIBSEG
  197. 14240  CALL SYSLOG(RETURNCODE%,OBJREQ$,OBJREPLY$)
  198. 14250  DEF SEG
  199. 14999  RETURN
  200. 16000  REM
  201. 16010  REM THIS ROUTINE STRIPS THE NULLS OFF THE RIGHT SIDE OF A STRING
  202. 16020  REM - ENTER WITH THE STRING TO BE STRIPPED AS INCOMING$
  203. 16030  REM   THE PROCESSED STRING WILL BE RETURNED AS OUTGOING$
  204. 16040  REM
  205. 16050  REM ENTER WITH - INCOMING$
  206. 16060  REM USES (WITHOUT ALTERING) - INCOMING$
  207. 16070  REM CHANGES - CHECKCHAR$, I, OUTGOING$
  208. 16080  REM
  209. 16090  OUTGOING$ = ""
  210. 16100  I = 0
  211. 16110  CHECKCHAR$ = CHR$(1)
  212. 16120  WHILE CHECKCHAR$ <> CHR$(0)
  213. 16130    I=I+1
  214. 16140    CHECKCHAR$=MID$(INCOMING$,I,1)
  215. 16150    IF CHECKCHAR$ <> CHR$(0) THEN OUTGOING$ = OUTGOING$ + CHECKCHAR$
  216. 16160  WEND
  217. 16999  RETURN
  218. 18000  REM
  219. 18010  REM SET UP THE REQUEST PACKET TO SCAN FOR PROPERTIES
  220. 18020  REM
  221. 18030  REM WHEN CALLING THIS ROUTINE REMEMBER TO SET THE LASTINSTANCE$
  222. 18040  REM (4 BYTES) TO -1 INITIALLY AND THEREAFTER EQUAL TO THE SEARCHINSTANCE$
  223. 18050  REM
  224. 18060  REM ENTER WITH - OBJECTTYPE$, OBJNAME$, LASTINSTANCE$, LIBSEG
  225. 18070  REM USES (BUT DOES NOT ALTER) - PATTERNTYPEHI$, LOPATTERNTYPELO$, LASTOBJECTSEEN$, LIBSEG
  226. 18080  REM CHANGES - REQPACLENHI$, REQPACLENLO$, FUNC$, REPPACLENHI$, REPPACLO$,
  227. 18090  REM           OBJREPLY$, OBJREQUEST$, PATTERNLEN$, PATTERN$
  228. 18100  FUNC$ = CHR$(60) 'scan for properties subfunction
  229. 18110  SEARCHPROPNAMELEN$ = CHR$(14)
  230. 18120  SEARCHPROPNAME$ = "IDENTIFICATION"
  231. 18130  OBJNAMELEN$ = CHR$(LEN(OBJNAME$))
  232. 18140  REQPACLENHI$ = CHR$(0)
  233. 18150  REQPACLENLO$ = CHR$(LEN(FUNC$)+ LEN(OBJTYPE$)+ LEN(OBJNAMELEN$)+ LEN(OBJNAME$)+ LEN(LASTINSTANCE$)+ LEN(SEARCHPROPNAMELEN$)+ LEN(SEARCHPROPNAME$))
  234. 18160  PROPREQ$ = REQPACLENLO$ + REQPACLENHI$ + FUNC$ + OBJTYPE$ + OBJNAMELEN$ + OBJNAME$ + LASTINSTANCE$ + SEARCHPROPNAMELEN$ + SEARCHPROPNAME$
  235. 18170  REM SET UP THE REPLY BUFFER]
  236. 18180  REPPACLENHI$ = CHR$(0)
  237. 18190  REPPACLENLO$ = CHR$(26)
  238. 18200  PROPREPLY$ = REPPACLENLO$ + REPPACLENHI$ + STRING$((ASC(REPPACLENHI$)*256) + ASC(REPPACLENLO$),CHR$(0))
  239. 18210  REM MAKE THE BINDERY REQUEST
  240. 18220  DEF SEG = LIBSEG
  241. 18230  CALL SYSLOG(PROPRETCODE%,PROPREQ$,PROPREPLY$)
  242. 18240  DEF SEG
  243. 18999  RETURN
  244. 20000  REM
  245. 20010  REM GET AND DISPLAY THE OBJECTS AND PROPERTIES
  246. 20020  REM
  247. 20030  REM ENTER WITH -
  248. 20040  REM USES (WITHOUT ALTERING) -
  249. 20050  REM CHANGES -
  250. 20060  REM
  251. 20070  WHILE RETURNCODE% <> 252
  252. 20080    IF EOP = 99 THEN GOSUB 40000
  253. 20085    IF X$ = "P" OR X$ = "D" THEN USER.NUMBER = USER.NUMBER + 1 : LOCATE 14,39 : PRINT USER.NUMBER : GOTO 20097
  254. 20090    IF EOP > 19 THEN PRINT : INPUT "Press ENTER to see next page";Z$ : GOSUB 40000
  255. 20095    GOTO 20100
  256. 20097    IF EOP > 54 THEN GOSUB 40000
  257. 20100    GOSUB 14000
  258. 20105    IF X$ = "P" THEN 20117
  259. 20110    IF RETURNCODE% <> 252 THEN PRINT MID$(OBJREPLY$,9,20); ELSE OBJREPLY$ = STRING$(60,CHR$(0))
  260. 20115    GOTO 20120
  261. 20117    IF RETURNCODE% <> 252 THEN LPRINT MID$(OBJREPLY$,9,20); ELSE OBJREPLY$ = STRING$(60,CHR$(0))
  262. 20120    LASTOBJECTID$ = MID$(OBJREPLY$,3,4)
  263. 20130    PROPERTIES$ = MID$(OBJREPLY$,59,1)
  264. 20140    IF PROPERTIES$ <> CHR$(0) THEN OBJTYPE$ = MID$(OBJREPLY$,7,2): INCOMING$ = MID$(OBJREPLY$,9,48): GOSUB 16000: OBJNAMELEN$ = CHR$(LEN(OUTGOING$)): OBJNAME$ = OUTGOING$: LASTINSTANCE$ = FIRSTTRY$: PROPRETCODE% = 0
  265. 20150    TESTFLAG = 0
  266. 20160    WHILE PROPRETCODE% <> 251
  267. 20170      GOSUB 18000
  268. 20180      GOSUB 30000
  269. 20190      GOSUB 32000
  270. 20200      GOSUB 34000
  271. 20210      IF MID$(PROPREPLY$,3,14) <> "IDENTIFICATION" THEN 20240
  272. 20215      IF X$ = "P" THEN 20227
  273. 20220      IF PROPRETCODE% <> 251 THEN PRINT TAB(25) MID$(RETURN.FORMAT$,3,48) ELSE PROPREPLY$ = STRING$(26,CHR$(0))
  274. 20225      GOTO 20230
  275. 20227      IF PROPRETCODE% <> 251 THEN LPRINT TAB(25) MID$(RETURN.FORMAT$,3,48) ELSE PROPREPLY$ = STRING$(26,CHR$(0))
  276. 20230      TESTFLAG = 1
  277. 20240      LASTINSTANCE$ = MID$(PROPREPLY$,21,4)
  278. 20250    WEND
  279. 20255    IF X$ = "P" THEN 20267
  280. 20260    IF TESTFLAG = 0 THEN PRINT
  281. 20265    GOTO 20270
  282. 20267    IF TESTFLAG = 0 THEN LPRINT
  283. 20270    EOP=EOP + 1
  284. 20280  WEND
  285. 20999  RETURN
  286. 30000  REM
  287. 30010  REM BUILD PACKET FORMAT
  288. 30020  REM
  289. 30030  FUNCTION$             = CHR$(61)
  290. 30040  OBJECT.TYPE.HI$       = CHR$(0)
  291. 30050  OBJECT.TYPE.LO$       = CHR$(1)
  292. 30060  OBJECT.TYPE$          = OBJECT.TYPE.HI$ + OBJECT.TYPE.LO$
  293. 30070  TEST.NAME$ = STRING$(48," ")
  294. 30080  FOR I = 1 TO 48
  295. 30090    IF MID$(OBJREPLY$,8+I,1) = " " THEN GOTO 30130
  296. 30100    MID$(TEST.NAME$,I,1) = MID$(OBJREPLY$,8+I,1)
  297. 30110  NEXT I
  298. 30120  OBJECT.NAME$ = LEFT$(TEST.NAME$,I)
  299. 30130  OBJECT.NAME.LENGTH$   = CHR$(LEN(OBJECT.NAME$))
  300. 30140  SEGMENT.NUMBER$       = CHR$(1)
  301. 30150  PROPERTY.NAME$        = "IDENTIFICATION"
  302. 30160  PROPERTY.NAME.LENGTH$ = CHR$(LEN(PROPERTY.NAME$))
  303. 30170  PACKET.LENGTH.HI$     = CHR$(0)
  304. 30180  PACKET.LENGTH.LO$     = CHR$(LEN(FUNCTION$) + LEN(OBJECT.TYPE$) + LEN(OBJECT.NAME.LENGTH$) + LEN(OBJECT.NAME$) + LEN(SEGMENT.NUMBER$) + LEN(PROPERTY.NAME.LENGTH$) + LEN(PROPERTY.NAME$))
  305. 30190  PACKET.FORMAT$        = PACKET.LENGTH.LO$ + PACKET.LENGTH.HI$ + FUNCTION$ + OBJECT.TYPE$ + OBJECT.NAME.LENGTH$ + OBJECT.NAME$ + SEGMENT.NUMBER$ + PROPERTY.NAME.LENGTH$ + PROPERTY.NAME$
  306. 30999  RETURN
  307. 32000  REM
  308. 32010  REM BUILD RETURN FORMAT
  309. 32020  REM
  310. 32030  RETURN.LENGTH.HI$ = CHR$(0)
  311. 32040  RETURN.LENGTH.LO$ = CHR$(132)
  312. 32050  RETURN.FORMAT$    = RETURN.LENGTH.LO$ + RETURN.LENGTH.HI$ + STRING$((ASC(RETURN.LENGTH.HI$) * 256) + ASC(RETURN.LENGTH.LO$),"x")
  313. 32999  RETURN
  314. 34000  REM
  315. 34010  REM CALL READ A PROPERTY VALUE
  316. 34020  REM
  317. 34030  DEF SEG = LIBSEG
  318. 34040  RETURN.CODE% = 0
  319. 34050  CALL SYSLOG(RETURN.CODE%,PACKET.FORMAT$,RETURN.FORMAT$)
  320. 34060  DEF SEG
  321. 34999  RETURN
  322. 40000  REM
  323. 40010  REM PAGE OVERFLOW
  324. 40020  REM
  325. 40030  PAGE.NUMBER = PAGE.NUMBER + 1
  326. 40035  IF X$ = "P" OR X$ = "D" THEN 40200
  327. 40040  CLS
  328. 40050  PRINT "USER NUMBER             USER NAME";
  329. 40060  PRINT TAB(70) "PAGE "; PAGE.NUMBER
  330. 40070  PRINT "===========             ========="
  331. 40080  PRINT
  332. 40090  GOTO 40600
  333. 40200  LOCATE 12,37
  334. 40210  PRINT "PRINTING"
  335. 40220  LPRINT CHR$(12)
  336. 40225  LPRINT DATE$; TAB(31); "NOVELL USER LISTING"; TAB(70); "PAGE "; PAGE.NUMBER
  337. 40226  LPRINT
  338. 40230  LPRINT "USER NUMBER             USER NAME"
  339. 40250  LPRINT "===========             ========="
  340. 40260  LPRINT
  341. 40270  GOTO 40600
  342. 40600  EOP = 1
  343. 40999  RETURN
  344.